﻿package utils;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import com.gtranslate.Translator;

import entitys.Word;

public class StringParser {
	
	// метод возвращает набор переведенных слов из файла

		public static List<Word> getWordsStrings(String string) {
			
			List<Word> words = new LinkedList<>(); // создаем переменную для хранения объектов слов - набор*

			Map<String, Integer> ws = new HashMap<>();
			
			String[] strs = string.replaceAll("[^a-zA-Z]", " ").toLowerCase().split("\\s+"); // оставляем только буквы и обрубаем пробелы и получем массив слов в нижнем регистре

			for (String st : strs) {
				if (ws.get(st) == null) {
					ws.put(st, 1);
					
					Word word = isWord(st); // ищем в Google API перевод, если создается слово, то добавляем его в набор*
					if (word != null) {
//						word.setCount(1);
						words.add(word); // добавление слова в набор
					}
				} else {
					for(Word w: words){
						if(w.getValue().equals(st)){
							w.incrementCounter();
						}
					}
				}

			}

			return words;
		}

		private static Word isWord(String string) {
			Word word = null;
			// обращаемся в гугл сервис и если слово имеет перевод возвращаем слово
			// иначе возвращаем null
			// если перевод есть то создаем слово и сетим в него все поля и
			// сохраняем в переменную word

			String translate = googleAPI(string).trim().replaceAll("[a-zA-Z]", "");
			if (translate != null && !translate.isEmpty()) {
				word = new Word(){};//убрал параметр string
				word.setCount(1);
				word.setKnown(0);
				word.setWordNew(0);
				word.setStudys(0);
				word.setValue(string);
				word.setTranslation(translate);
				long sisDate = System.currentTimeMillis();
				word.setLastDate(sisDate);
			}
			return word;
		}

		private static String googleAPI(String word) {
			Translator translate = Translator.getInstance();
			String text = translate.translate(word, "en", "ru");
			return text;
		}

}
